﻿/*
 * Created by SharpDevelop.
 * User: kat
 * Date: 11/23/2011
 * Time: 8:47 PM
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using Business_Entity;
using System.Drawing;
using System.Windows.Forms;

namespace DAOFactory
{
	/// <summary>
	/// Description of DAOLineaPedidoServicio.
	/// </summary>
	public class DAOLineaPedidoServicio
	{
		public DAOLineaPedidoServicio()
		{
		}
		
		public int anularAtencion (int idPedidoVenta, int idAtencion){
			try{
				SqlCommand cmd = new SqlCommand("SERVICIOS_ANULAR_ATENCION_T", ConnectionManager.getConnection());
        	
				cmd.CommandType = CommandType.StoredProcedure;
	
				cmd.Parameters.Add("@IDPEDIDOVENTA", SqlDbType.Int);
				cmd.Parameters["@IDPEDIDOVENTA"].Value = idPedidoVenta;
				cmd.Parameters.Add("@IDATENCION", SqlDbType.Int);
				cmd.Parameters["@IDATENCION"].Value = idAtencion;
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
					
				int result;
			
				cmd.ExecuteNonQuery();			
				result = (int) cmd.Parameters["@ESTADOTRAN"].Value;		
			
				return result;			
        	}
			catch (Exception e) {
        		MessageBox.Show(e.Message,"Error");
        		return 0;
        	}
			
		}
		
		public int verificaDisponibilidad (int IdEmpleado, DateTime fecha, int IdTipoServicio, int IdMascota){
			
						
			try{
				SqlCommand cmd = new SqlCommand("RRHH_BUSCAR_DISPONIBILIDAD_GENERAL_L", ConnectionManager.getConnection());
        	
				cmd.CommandType = CommandType.StoredProcedure;
	
				cmd.Parameters.Add("@IDEMPLEADO", SqlDbType.Int);
				cmd.Parameters["@IDEMPLEADO"].Value = IdEmpleado;
				cmd.Parameters.Add("@HORA", SqlDbType.DateTime);
				cmd.Parameters["@HORA"].Value = fecha;
				cmd.Parameters.Add("@FECHA", SqlDbType.DateTime);
				cmd.Parameters["@FECHA"].Value = fecha;
				cmd.Parameters.Add("@IDSERVICIO", SqlDbType.Int);
				cmd.Parameters["@IDSERVICIO"].Value = IdTipoServicio;
				cmd.Parameters.Add("@IDMASCOTA", SqlDbType.Int);
				cmd.Parameters["@IDMASCOTA"].Value = IdMascota;
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
					
				int result;
			
				cmd.ExecuteNonQuery();			
				result = (int) cmd.Parameters["@ESTADOTRAN"].Value;		
			
				return result;			
        	}
			catch (Exception e) {
        		//MessageBox.Show(e.Message,"Error");
        		return 0;
        	}
			
		}
			
			

		public int verificaEmpleadoFecha( int idTipoServicio, int idEmpleado, DateTime fecha){
						
			try{
				SqlCommand cmd = new SqlCommand("VENTA_POSPONER_EMPLEADO_ATENCION_T", ConnectionManager.getConnection());
        	
				cmd.CommandType = CommandType.StoredProcedure;
			
				cmd.Parameters.Add("@IDEMP", SqlDbType.Int);
				cmd.Parameters["@IDEMP"].Value = idEmpleado;
				cmd.Parameters.Add("@HORA", SqlDbType.DateTime);
				cmd.Parameters["@HORA"].Value = fecha;
				cmd.Parameters.Add("@FECHA", SqlDbType.DateTime);
				cmd.Parameters["@FECHA"].Value = fecha;
				cmd.Parameters.Add("@IDSERVICIO", SqlDbType.Int);
				cmd.Parameters["@IDSERVICIO"].Value = idTipoServicio;
				cmd.Parameters.Add("@RESULT", SqlDbType.Int);
				cmd.Parameters["@RESULT"].Direction = ParameterDirection.Output;
				
					
				int result;
			
				cmd.ExecuteNonQuery();			
				result = (int) cmd.Parameters["@RESULT"].Value;		
			
				return result;			
        	}
			catch (Exception e) {
        		MessageBox.Show(e.Message,"Error");
        		return 0;
        	}
			
		}
	
	
		public int verificaMascotaFecha( int idTipoServicio, int idMascota, DateTime fecha){
			
			try{
				SqlCommand cmd = new SqlCommand("VENTA_POSPONER_MASCOTA_ATENCION_T", ConnectionManager.getConnection());
        	
				cmd.CommandType = CommandType.StoredProcedure;
			
				cmd.Parameters.Add("@MASCOTA", SqlDbType.Int);
				cmd.Parameters["@MASCOTA"].Value = idMascota;
				cmd.Parameters.Add("@IDSERVICIO", SqlDbType.Int);
				cmd.Parameters["@IDSERVICIO"].Value = idTipoServicio;
				cmd.Parameters.Add("@HORA", SqlDbType.DateTime);
				cmd.Parameters["@HORA"].Value = fecha;
				cmd.Parameters.Add("@FECHA", SqlDbType.Int);
				cmd.Parameters["@FECHA"].Value = idTipoServicio;
				cmd.Parameters.Add("@RESULT", SqlDbType.Int);
				cmd.Parameters["@RESULT"].Direction = ParameterDirection.Output;
				
					
				int result;
			
				cmd.ExecuteNonQuery();			
				result = (int) cmd.Parameters["@RESULT"].Value;		
			
				return result;			
        	}
			catch (Exception e) {
        		MessageBox.Show(e.Message,"Error");
        		return 0;
        	}
			
		}
		
		public BELineaPedidoServicio getLineaPedidoServicio(int idventa, int idservicio){
			try{
				SqlCommand cmd = new SqlCommand("TIFF_GETLINEAPEDIDOSERVICIO_T", ConnectionManager.getConnection());
       		
				cmd.CommandType = CommandType.StoredProcedure;
			
				cmd.Parameters.Add("@IDVENTA", SqlDbType.Int);
				cmd.Parameters["@IDVENTA"].Value = idventa;
				cmd.Parameters.Add("@IDSERVICIO", SqlDbType.Int);
				cmd.Parameters["@IDSERVICIO"].Value = idservicio;
				
			
				SqlDataReader amd = cmd.ExecuteReader();			
		
				BELineaPedidoServicio be = new BELineaPedidoServicio();
				BEEstadoAtencion estado = new BEEstadoAtencion();
				BEMascota mascota = new BEMascota();
				BEEmpleado empleado = new BEEmpleado();
				BEServicio servicio = new BEServicio();
			
			
			
				if (amd.HasRows) 
				{
					while(amd.Read())
					{
						try
						{
							be.IdPedidoVenta = int.Parse(amd[0].ToString());
							be.Id = int.Parse(amd[1].ToString());
							be.Fecha =  Convert.ToDateTime(amd[2].ToString());
							be.Observaciones = amd[3].ToString();
							mascota.Id = int.Parse(amd[4].ToString());
							mascota.Nombre = amd[5].ToString();
							servicio.Codigo =  int.Parse(amd[6].ToString());
							servicio.Descripcion = amd[7].ToString();
							servicio.Duracion = int.Parse(amd[8].ToString());
							empleado.Nombre = amd[9].ToString();
							empleado.ApPaterno = amd[10].ToString();
							empleado.ApMaterno = amd[11].ToString();
							estado.IdEstado = int.Parse(amd[12].ToString());
							estado.Descripcion = amd[13].ToString();
							
							be.Estado = estado;	
							be.Mascota = mascota;
							be.Servicio = servicio;
							be.Empleado = empleado;							
						}
						catch
						{
							System.Windows.Forms.MessageBox.Show("Error al obtener la atencion","Aviso");
							amd.Close();
							return null;
						}
					}
					amd.Close();
							return be;
				}
				else
				{
					amd.Close();
					return null;
				}
			}
			catch{
				
				return null;
			}
		}	
		
		public List<List<string>> getServicios(List<string> datos){
			try{
				SqlCommand cmd = new SqlCommand("TIFF_BUSCAR_LINPEDSERV_T", ConnectionManager.getConnection());
       		
				cmd.CommandType = CommandType.StoredProcedure;
		
				cmd.Parameters.Add("@CLIENTE", SqlDbType.VarChar, 200);
				cmd.Parameters["@CLIENTE"].Value = datos[0];
				cmd.Parameters.Add("@MASCOTA", SqlDbType.VarChar, 200);
				cmd.Parameters["@MASCOTA"].Value = datos[1];
				cmd.Parameters.Add("@TIPOSERV", SqlDbType.VarChar, 200);
				cmd.Parameters["@TIPOSERV"].Value = datos[2];
				cmd.Parameters.Add("@EMPLEADO", SqlDbType.VarChar, 200);
				cmd.Parameters["@EMPLEADO"].Value = datos[3];
				cmd.Parameters.Add("@ESTADO", SqlDbType.VarChar, 200);
				cmd.Parameters["@ESTADO"].Value = datos[4];
			
				SqlDataReader amd = cmd.ExecuteReader();			
	
				List<List<string>> result = new List<List<string>>();
			
				int i = 0;
			
				if (amd.HasRows) 
				{
					while(amd.Read())
					{
						try
						{
							List<string> fila = new List<string>();
							
							fila.Add(amd[0].ToString());
							fila.Add(amd[1].ToString());
							fila.Add(amd[2].ToString());
							fila.Add(amd[3].ToString());
							fila.Add(amd[4].ToString());
							fila.Add(amd[5].ToString());
							fila.Add(amd[6].ToString());
							fila.Add(amd[7].ToString());
							result.Add(fila);
							i++;
						}
						catch
						{
							System.Windows.Forms.MessageBox.Show("Error al obtener el servicio","Error");
							amd.Close();
							return null;
						}
					}
					amd.Close();
					return result;
				}	
				else
				{
					amd.Close();
					return null;
				}
			}
			catch{
			
				return null;
			}
		}
	}
}
